/**
 * Clase que representa la estructura de la tabla en un objeto Java. Cada
 * atributo de la tabla es creado como variables y su formato como anotaciones
 *
 * @version 1.0, 25/04/12
 * @author avbravo mod:Katherine Moreno
 */
package person.academy;

import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import system.general.Columna;

@ManagedBean(name = "person_academyBeans")
@RequestScoped
public class Beans {

    @Columna(nombre = "id", tipo = "Integer")
    private Integer id = 0;
    @Columna(nombre = "id_persona", tipo = "Integer")
    private Integer id_persona = 0;
    @Columna(nombre = "id_pais", tipo = "Integer")
    private Integer id_pais = 0;
    @Columna(nombre = "idl_nivel", tipo = "Integer")
    private Integer idl_nivel = 0;
    @Columna(nombre = "inicio", tipo = "Date")
    private Date inicio = new java.util.Date();
    @Columna(nombre = "fin", tipo = "Date")
    private Date fin = new java.util.Date();
    @Columna(nombre = "especialidad", tipo = "String")
    private String especialidad = "";
    @Columna(nombre = "titulo", tipo = "String")
    private String titulo = "";
    @Columna(nombre = "institucion", tipo = "String")
    public String institucion = "";
    private location.general.Beans countryBeans = new location.general.Beans();

    public Beans() {
    }

    /**
     * Método constructor que asigna todos los valores del registro de un
     * usuario
     *
     * @param id Atributo que identifica la llave primaria (Autosecuencia)
     * @param idl_nivel Atributo del nivel para el login
     * @param id_persona Atributo que identifica la persona
     * @param id_pais Atributo que identifica el pais
     * @param especialidad Atributo que identifica la especialidad
     * @param titulo Atributo que identifica la titulo
     * @param inicio Atributo que identifica la fecha de inicio
     * @param fin Atributo que identifica la fecha de final
     */
    public Beans(int id, int id_persona, int id_pais, int idl_nivel, Date inicio, Date fin, String titulo, String especialidad, String institucion, String nombrepais) {
        this.id = id;
        this.id_persona = id_persona;
        this.id_pais = id_pais;
        this.idl_nivel = idl_nivel;
        this.inicio = inicio;
        this.fin = fin;
        this.titulo = titulo;
        this.especialidad = especialidad;
        this.institucion = institucion;
        this.countryBeans.setNombre(nombrepais);
    }

    /**
     * Método que permite inicializar todas las variables
     */
    public void clearBeans() {
        setId(0);
        setIdl_nivel(0);
        setId_persona(0);
        setId_pais(0);
        setEspecialidad("");
        setTitulo("");
        setInicio(new java.util.Date());
        setFin(new java.util.Date());
        setInstitucion("");
        getCountryBeans().clearBeans();
    }

    /**
     * Método que permite sustituir caracteres especiales que puedan afectar las
     * sentencias SQL. por ejemplo: ('), (/). Debe ser utilizado en el (set) de
     * los atributos tipo String.
     *
     * @param data cualquier dato tipo String
     * @return Devuelve el dato con la sustitución de caracteres especiales
     */
    private String strScape(String data) {
        data = data.trim();
        data = data.replace("'", "''");
        data = data.replace("\\", "\\\\");
        return data;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return this.id;
    }

    public void setIdl_nivel(Integer idl_nivel) {
        this.idl_nivel = idl_nivel;
    }

    public Integer getIdl_nivel() {
        return this.idl_nivel;
    }

    public void setId_persona(Integer id_persona) {
        this.id_persona = id_persona;
    }

    public Integer getId_persona() {
        return this.id_persona;
    }

    public void setId_pais(Integer id_pais) {
        this.id_pais = id_pais;
    }

    public Integer getId_pais() {
        return this.id_pais;
    }

    public String getEspecialidad() {
        return this.especialidad;
    }

    public void setEspecialidad(String especialidad) {
        this.especialidad = strScape(especialidad);
    }

    public String getTitulo() {
        return this.titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = strScape(titulo);
    }

    public void setInicio(Date inicio) {
        this.inicio = inicio;
    }

    public Date getInicio() {
        return this.inicio;
    }

    public Date getFin() {
        return fin;
    }

    public void setFin(Date fin) {
        this.fin = fin;
    }

    public String getInstitucion() {
        return this.institucion;
    }

    public void setInstitucion(String institucion) {
        this.institucion = strScape(institucion);
    }

    /**
     * @return the countryBeans
     */
    public location.general.Beans getCountryBeans() {
        return countryBeans;
    }
}
